Data storage subsystems used in data processing systems commonly comprise a device controller connected to one or more storage devices on which customer data is retained. An important requirement of such subsystems is the ability to store large amounts of data which is at the same time accessible by the host data processing system at high speed. There is an ongoing effort to develop subsystems which can transfer the stored data at ever increasing speeds.
A number of interfaces have been developed to connect the host to the device controller and also the controller to the devices. One such interface is the Small Computer Systems Interface (SCSI) which has been adopted as a standard by the American National Standards Institute. Data Storage subsystems are known which employ a SCSI bus to connect the controller to the device.
A number of techniques for transferring data from the subsystem to the host have been described. In one known technique, for every data transfer operation, the data is checked for errors before it is transmitted to the device. Each sector of data is read from the device and held in a data buffer where it is checked for errors before it is sent up to the attached host data processing system. This technique has the advantage in that only good data is transferred to host. However there is an inherent performance penalty in the increased time taken to transfer all the data.
In the IBM System/370, another technique is employed whereby the data is sent directly from the device to the host without being checked. This sending of `Raw` data has a performance benefit over the previously described method in that there is no need to hold a sector in the data buffer before transmission. However, a disadvantage of this technique as employed in the System/370 arises when there is an error in the transmitted data. When this happens, it is necessary to retransmit a large portion of the data originally requested by the host.
A number of performance enhancing techniques have been developed to speed up transmission of data between device and host. One of these is split transfer which reduces the latency caused when the required data is not under the head when the data is requested. U.S. Pat. No. 4,494,157 describes the use of split transfer to transfer data in two bursts to a buffer. Both bursts of data are received in the buffer before being sent up to the host system.